前幾篇我們先了解了 MCP 是什麼,也知道了 MCP 裡面的三個角色:Host、Client、Server,那麼 Server 建立好之後,裡面到底可以放什麼?
這篇就來認識 MCP 裡很重要的三個元件:
Tools、Resources、Prompts。
如果希望 AI 可以幫我們執行一些事情,就可以透過 Tool 來完成,例如:
簡單來說Tools就是:
提供給 AI 使用的工具。
例如我們可以在 Server 裡建立一個 hello:
@mcp.tool()
def hello(name: str) -> str:
return f"Hello, {name}!"
這裡的 @mcp.tool() 就是在告訴 MCP Server,這是一個可以提供給 Client 使用的 Tool,而 hello() 裡面的程式,就是這個 Tool 實際會執行的功能,所以原本只是一個普通的 Python 函式,加上 @mcp.tool() 後,就可以成為 MCP Tool。
Tool 比較像是做事情,而 Resource 比較像是提供資料,例如 MCP Server 可以提供:
專案文件
設定檔
資料庫內容
其他外部資料
Client 可以取得這些資料,再交給 AI 使用。
Tool 是做事情,Resource 是提供資料。
Prompt 應該是大家比較熟悉的東西,就是給 AI 的提示。
在 MCP 中,也可以把一些常用的提示整理成 Prompt,讓 Client 可以取得並使用,例如:
分析這份文件
整理這個專案
幫我檢查這段程式碼
這些都可以事先設計成 Prompt 所以:
Prompt 是提供給 AI 使用的提示。
看到這裡,可以先簡單整理成:
| 元件 | 主要用途 | 理解 |
|---|---|---|
| Tools | 執行功能 | 做事情 |
| Resources | 提供資料 | 看資料 |
| Prompts | 提供提示 | 告訴 AI 怎麼做 |
也就是:
MCP Server
│
├── Tools
│ └── 執行功能
│
├── Resources
│ └── 提供資料
│
└── Prompts
└── 提供提示
這三個就是之後學習 MCP 時會一直遇到的東西。
這裡可以回到我們剛剛建立的 hello Tool,當 MCP Client 連上 Server 後,會先向 Server 詢問:
「你有哪些 Tool?」
這就是我們剛剛在 MCP Inspector 裡看到的:
tools/list
Server 收到請求後,就會把目前提供的 Tool 告訴 Client
MCP Client
↓
tools/list
↓
MCP Server
↓
hello
所以 Client 才會知道:
這個 Server 有一個叫做
hello的 Tool 可以使用。
這也是 MCP 很重要的一個地方,Client 不需要事先寫死每一個 Tool,而是可以從 Server 得知有哪些工具可以使用。
今天認識了 MCP Server 裡面的三個主要元件,Tools、Resources、Prompts。,其中 Tool 是我們接下來會最常使用的部分,因為它可以讓 AI 實際執行功能,我們也透過 MCP Inspector 看到了 tools/list,確認 Client 可以從 Server 得知有哪些 Tool,下一篇,就正式來實作我們的第一個 MCP Tool。